package com.example.mapper;

import com.example.pojo.UserRole;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

@Mapper
public interface UserRoleMapper {
    /**
     * 根据用户id查询角色id
     * @param userId
     * @return
     */
    @Select("SELECT role_id FROM user_roles WHERE user_id = #{userId}")
    Long findRoleIdsByUserId(Long userId);

    /**
     * 添加用户角色关系
     * @param userRole
     */
    @Select("INSERT INTO user_roles (user_id, role_id) VALUES (#{userId}, #{roleId})")
    void insert(UserRole userRole);

    /**
     * 根据用户id查询角色id
     * @param userId
     * @return
     */
    @Select("SELECT role_id FROM user_roles WHERE user_id = #{userId}")
    Long findRoleIdByUserId(Long userId);

    /**
     * 根据角色id查询角色code
     * @param roleId
     * @return
     */
    @Select("SELECT role_code FROM roles WHERE role_id = #{roleId}")
    String findRoleCodeById(Long roleId);

    /**
     * 超管调用：升级用户为管理员
     * @param userId
     * @return
     */
    @Update("UPDATE user_roles SET role_id = 3 WHERE user_id = #{userId}")
    Integer upgradeUser(Long userId);
    /**
     * 超管调用：降级用户为普通用户
     * @param userId
     * @return
     */
    @Update("UPDATE user_roles SET role_id = 2 WHERE user_id = #{userId}")
    Integer downgradeUser(Long userId);
}
